// 基于 axios 封装的请求模块
// 1.引入axios
import request from 'axios'
import store from '../store'
import router from '@/router'
import { Toast } from 'vant'

// 2.创建新的axios实例,配置基地址
const axios = request.create({
  baseURL: 'http://liufusong.top:8080'
})

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  if (store.state.token.length > 0 && config.headers.authorization === undefined) {
    // // 在发起请求之前，把token携带在请求头（表明自己身份）
    config.headers.authorization = store.state.token
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加相应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  if (response.data.status === 400) {
    // 清除token
    store.commit('setToken', '')
    router.push('/login')
    Toast('登陆失效，请先登录')
  }
  return response
}, function (error) {
  // 对相应错误做些什么
  console.dir(error)
  return Promise.reject(error)
})
// 3.// 导出自定义函数, 参数对象解构赋值
export default ({ url, method = 'GET', params, data, headers }) => {
  return axios({
    url,
    method,
    params,
    data,
    headers
  })
}
